라우터의 패킷 중계 동작
라우터의 기본
허브와의 공통점과 차이점:
공통점
- 중계 대상을 등록한 표를 보고 중계
차이점:
- 구체적인 동작 방식이 다르다.
- 라우터는 IP 방식
- 허브는 이더넷 방식
라우터 내부 구조
- 중계 부분: 중계 대상을 판단
- 포트 부분: 패킷 송/수신 담당
역할 분담은 프로토콜 스택의 역할 분담과 유사하다.
- IP 담당 → 중계부분
- LAN 어뎁터 → 포트부분
이더넷뿐 아니라 무선 LAN도 사용 가능
포트 → 중계 부분 → 포트 → 허브 식으로 패킷이 전달 된다.
각 포트에는 MAC 주소와 IP주소가 할당되어 있다.
경로표에 등록된 정보
스위칭 허브는 MAC 주소로 중계 대상을 판단하지만, 라우터는 IP 헤더에 기재되어 있는 수신처 IP 주소로 중계 대상 판단.
중계 대상에 사용되는 표를 라우팅 테이블 혹은 경로표라고 부른다.
판단 대상의 IP 주소와 서브넷 주소 -네트워크 번호(192.168.1.0 형태처럼 마지막 호스트 번호가 0으로 된 주소)와 비교하여 일치하는지 판단한다.
이때 네트워크 번호의 비트 수를 판단하는 것이 넷마스크
다만, 수신처 항목에 서브넷에 할당된 넷마스크 값과 경로표에 등록된 넷마스크 값이 다를 수 있다.
주소 집약
몇 개의 서브넷을 모아서 한 개의 서브넷으로 간주한 후 묶은 서브넷을 경로에 등록하는 것
(10.10.#.#)가 네트워크 번호이다.
B에는 수신처 항목에 집약한 주소를 등록하여 하나의 서브넷인 것처럼 간주할 수 있다.
게이트웨이와 인터페이스
이 항목들은 패킷의 중계 대상을 나타낸다.
수신처 항목과 넷마스크 항목에서 해당 행을 찾아내면 '인터페이스' 항목에 등록되어있는 인터페이스(포트)에서 '게이트웨이' 항목에 등록되어있는 IP 주소를 가진 라우터에 패킷을 중계
마지막 메트릭은 목적지가 얼마나 가까운지를 나타낸다.
스위칭 허브와 다르게 IP 경로표에 경로 정보를 등록하거나 갱신하는 동작은 패킷을 중계하는 동작과 분리되어있다.
그러면 등록은 어떻게 하지? 다음과 같은 방식으로 한다.
- 수동으로 경로 정보를 등록/갱신
- 라우터 프로토콜 이라는 구조를 사용하여 라우터들끼리 경로 정보를 교환하고 라우터가 자체에서 경로표에 등록
3 라우터의 패킷 수신 동작
라우터 포트에는 MAC 주소가 할당되어 있어서 자신의 주소에 해당하는 패킷만 수신하고 해당하지 않는 패킷은 폐기
4 경로표를 통해 출력 포트 발견
패킷을 받는 수신 동작이 끝나면 MAC 헤더를 폐기
MAC 헤더를 폐기하고 그 뒤의 IP 헤더를 읽어드려 경로표의 수신처 IP 주소와 비교
이때 넷마스크 항목에 등록된 값을 통해 네트워크 번호 부분만 비교하고 같은 행의 게이트웨이로 패킷을 보낸다.
후보가 여러개인 경우
네트워크 번호의 비트수가 가장 긴 것을 찾는다. 네트워크 비트 수가 길면 호스트 번호가 짧다는 의미 → 호스트 번호로 할당 가능한 번호의 수가 적다는 것 → 서브넷이 작다는 의미 → 중계 대상을 정확하게 판단할 수 있다.
길이도 같으면?
우회로를 두는 경우가 이에 해당 되는데 메트릭 값으로 판단
일치하는 행이 없을 경우?
ICMP 메세지로 송신처에 이 사실을 통보(허브와 다른 부분) 네트워크의 규모가 크기 때문에 모든 패킷을 모든 라우터에 뿌릴 경우 네트워크가 혼잡해진다.
해당하는 경로가 없는 경우 선택하는 기본 경로
수신처 IP를 0.0.0.0으로 하고 넷마스크 항목을 0.0.0.0으로 하면 모든 주소에 일치
일치하는 행이 없을 경우 이곳으로 일치가 되고 이런 경로를 기본 경로라고 부른다.
패킷은 유효기간 존재
TTL(Time To Live) 항목이 IP 헤더에 존재하는데 패킷이 라우터를 경유할 때마다 값이 1씩 줄어들다가 0이 되면 만료 되에 패킷을 폐기
패킷이 같은 장소를 순환하기 위한 사태를 막기 위해 존재
정상 경로표에서는 일어나지 않지만, 정보 오류나 기기 고장 등으로 우회로로 전환될때 일시적으로 발생 가능
지구 반대편까지 액세스해도 경유하는 라우터 수는 많아야 수십개. TTL을 64 혹은 128로 설정해두면 수명 전에 대충 도착한다.
큰 패킷은 나누어 분할
포트 부분은 이더넷 뿐 아니라 LAN이나 통신회선의 경우도 있다. 이때 패킷의 최대 길이가 달라지거나 헤더의 크기가 달라져 패킷의 실질적인 길이가 짧아지는 경우가있다.
이때 IP 프로토콜에 규정된 분할(fragmentation)을 한다.
TCP의 데이터 조각 분할(데이터 송·수신)과는 다른 방식으로 동작한다.
TCP의 데이터 분할
패킷에 데이터를 저장하기 전에 이루어진다. 즉, 분할한 데이터 조각을 한 개의 패킷에 저장 IP 조각 나누기 관점에서는 분할 되어있지 않은 셈
IP의 데이터 분할
출력 측의 MTU를 조사해 출력측에 송신할 수 있는지 조사
만약 MTU가 충분히 크지 않다면 패킷을 분할
IP 헤더 필드를 보면 분할 가능한지 알 수 있는데 분할 불가일 경우 패킷 폐기
데이터가 분할 되면 IP 헤더를 덧붙인다.
이때 TCP 헤더의 경우 IP 입장에서는 데이터로 간주하여 같이 분할한다.
이때 IP 헤더는 분할 전의 IP 헤더를 복사한 것이고, 분할한 정보만 고쳐쓴다.
라우터의 송신 동작은 컴퓨터와 유사하다.
상대 판단 법
- 게이트 웨이에 IP 주소가 쓰여 있으면 IP 주수로 건네줌
- 공백이면 IP 헤더의 수신처 IP 주소가 건네줄 상대 라우터도 ARP(IP와 이더넷 송수신)를 사용해 다음에 건내줄 상대의 주소를 조사
라우터와 스위칭 허브의 관계
MAC 헤더를 부가하는 부분이 사실 이더넷의 패킷의 데이터 부분에 IP의 패킷을 넣는 것에 가깝다.
이는 이더넷의 패킷에 IP 패킷을 넣고, 이더넷의 원리로 다음 라우터까지 운반한다는 것이다.
라우터는 IP의 개념에 기초하였고, 스위칭 허브는 이더넷에 기초하여 만들어졌다.
즉 라우터는 패킷을 운반하는 일을 스위칭 허브에 의뢰하여 패킷을 운반한다.
IP가 이더넷에 의뢰하는 것은 최종 목적지가 아니라 다음 라우터에 패킷을 운반하는 것